-- *****************************************************************
-- REDSTONE-ROUTER-MIB
--
-- Redstone Communications Inc. Enterprise MIB
-- The Router MIB is used to manage the creation and deletion as
-- well as the administrative states of the protocols and functions
-- that run within a designated router.
--
-- Copyright 1999-2000 Redstone Communications, Incorporated.
-- All Rights Reserved.
-- Created: Dec. 17, 1999 - jscano
-- *****************************************************************

REDSTONE-ROUTER-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY,
        OBJECT-TYPE,
        Unsigned32
                FROM SNMPv2-SMI
        RowStatus
                FROM SNMPv2-TC
        RsName
                FROM REDSTONE-TC
        rsMgmt
                FROM REDSTONE-SMI;

rsRouterMIB  MODULE-IDENTITY
        LAST-UPDATED "0001210000Z"
        ORGANIZATION "Redstone Communications, Inc."
        CONTACT-INFO
        "
        Redstone Communications, Inc.
                5 Carlisle Road
        Westford MA 01886
        USA
        Tel:    +1-978-692-1999
                Email:  mib@redstonecom.com
        "
        DESCRIPTION
                "Initial version of this MIB module."
        ::= { rsMgmt 32 }

-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Textual conventions
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

RsNextRouterIndex ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "Coordinates routerIndex value allocation for entries
        in an associated router table.  Clients must first read
        the routerIndex value from this object, then create an
        entry having the routerIndex value in the associated
        router table.

        The DESCRIPTION clause for an object of this type must
        identify the associated router table.

        A GET of this object returns the next available routerIndex
        value to be used to create an entry in the associated
        router table; or zero, if no valid routerIndex value is
        available. This object also returns a value of zero when
        it is the lexicographic successor of a varbind presented
        in an SNMP GETNEXT or GETBULK request, for which circumstance
        it is assumed that routerIndex allocation is unintended.

        Successive GETs will typically return different
        values, thus avoiding collisions among cooperating
        management clients seeking to create table entries
        simultaneously.

        Unless specified otherwise by its MAX-ACCESS and DESCRIPTION
        clauses, an object of this type is read-only, and a SET of
        such an object returns a notWritable error.
        "
    SYNTAX     Unsigned32 

RsRouterProtocolIndex ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "Identifies the router protocol."
    SYNTAX      INTEGER {
                    ip(1),
                    osi(2),
                    icmp(3),
                    igmp(4),
                    tcp(5),
                    udp(6),
                    bgp(7),
                    ospf(8),
                    isis(9),
                    rip(10),
                    snmp(11),
                    ntp(12),
                    generator(13),
                    localAddressServer(14),
                    dhcpProxy(15),
                    dhcpRelay(16),
                    nameResolver(17),
                    policyManager(18),
                    sscClient(19),
                    cops(20)
                }

-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Managed objects
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

rsRouterObjects   OBJECT IDENTIFIER ::= { rsRouterMIB 1 }

-- //////////////////////////////////////////////////////////////////////
--
-- Routers
--
-- //////////////////////////////////////////////////////////////////////

--
-- Router Id selection for creating "virtual" routers 
--

rsRouterNextRouterIndex OBJECT-TYPE
    SYNTAX      RsNextRouterIndex
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Coordinates routerIndex value allocation for entries
        in rsRouterTable.

        A GET of this object returns the next available routerIndex 
        value to be used to create an entry in the associated
        router table; or zero, if no valid routerIndex value is
        available. This object also returns a value of zero when 
        it is the lexicographic successor of a varbind presented 
        in an SNMP GETNEXT or GETBULK request, for which circumstance
        it is assumed that routerIndex allocation is unintended.

        Successive GETs will typically return different
        values, thus avoiding collisions among cooperating
        management clients seeking to create table entries
        simultaneously.
        "
    ::= { rsRouterObjects 1 }

--
-- The Router Table
--

rsRouterTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsRouterEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains entries for routers present in the system."
    ::= { rsRouterObjects 2 }

rsRouterEntry OBJECT-TYPE
    SYNTAX      RsRouterEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Each entry in this table represents a single router.  Creating
        and/or deleting entries in this table causes corresponding 
        entries to be created or deleted in the rsRouterProtocolTable."
    INDEX   { rsRouterIndex }
    ::= { rsRouterTable 1 }

RsRouterEntry ::= SEQUENCE {
    rsRouterIndex
        Unsigned32,
    rsRouterName
        RsName,
    rsRouterRowStatus
        RowStatus
    }

rsRouterIndex OBJECT-TYPE
    SYNTAX      Unsigned32 
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The routerIndex of this router. When creating entries
        in this table, suitable values for this object are
        determined by reading rsRouterNextRouterIndex."
    ::= { rsRouterEntry 1 }

rsRouterName OBJECT-TYPE
    SYNTAX      RsName 
    MAX-ACCESS  read-create 
    STATUS      current
    DESCRIPTION
        "The administratively assigned name given to this router.
         The name must be unique within the context of this table
         and cannot be changed after the router instance is created" 
    ::= { rsRouterEntry 2 }

rsRouterRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Controls creation/deletion of entries in this table
        according to the RowStatus textual convention, 
        constrained to support the following values only:

            createAndGo
            destroy
            
        To create an entry in this table, the following 
        entry objects MUST be explicitly configured:

            rsRouterRowStatus
            rsRouterName

        In addition, when creating an entry the following
        conditions must hold:

            A value for rsRouterIndex must have been determined
            previously by reading rsRouterNextRouterIndex. 

        A corresponding entries in rsRouterProtocolTable are 
        created/destroyed as a result of creating/destroying an
        entry in this table.
        "
    ::= { rsRouterEntry 3 }


--
-- The Router Protocol Table
--

rsRouterProtocolTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsRouterProtocolEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains entries for each protocol supported
         by the router entry created in the rsRouterTable."
    ::= { rsRouterObjects 3 }

rsRouterProtocolEntry OBJECT-TYPE
    SYNTAX      RsRouterProtocolEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Each entry provides administrative control on a router protocol
         for the router designated by the first indice to
         this table.  The second indice identifies the router
         protocol.

         Entries in this table are created as a side-effect of row
         creation in the rsRouterTable." 
    INDEX   { rsRouterProtocolRouterIndex, rsRouterProtocolProtocolIndex }
    ::= { rsRouterProtocolTable 1 }

RsRouterProtocolEntry ::= SEQUENCE {
    rsRouterProtocolRouterIndex
        Unsigned32,
    rsRouterProtocolProtocolIndex
        RsRouterProtocolIndex,
    rsRouterProtocolRowStatus
        RowStatus
    }

rsRouterProtocolRouterIndex OBJECT-TYPE
    SYNTAX      Unsigned32 
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The routerIndex of this router.  This object is the 
         same as the rsRouterIndex object defined in the rsRouterTable."
    ::= { rsRouterProtocolEntry 1 }

rsRouterProtocolProtocolIndex  OBJECT-TYPE
    SYNTAX      RsRouterProtocolIndex
    MAX-ACCESS  read-only 
    STATUS      current
    DESCRIPTION
        "Identities the router protocol."
    ::= { rsRouterProtocolEntry 2 }

rsRouterProtocolRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Administrative control and status of a protocol on a router.

         The following values can be read from this object:

         active(1)   -  Indicates that the protocol on the designated router
                        is created, configured, and running.

         notReady(3) -  Indicates that the protocol requires additional
                        configuration in a protocol specific MIB module.
                        Examples include the BGP and OSPF protocols, which
                        require additional configuration of protocol specific
                        parameters such as: Autonomous System (AS) for BGP,
                        and Process Id for OSPF.
                     
         destroy(6)  -  The destroy(3) operation can fail if there are
                        executing applications dependent on the protocol.
                        If an attempt is made to destroy(6) an active(1) 
                        protocol that other applications are dependent on,
                        the rowStatus will read destroy(6).  Normally, when
                        a row is destroyed, the agent will cleaup and remove
                        the entry.

         The following values can be written to this object:

         active(1)   -  Activate protocol on the designated router.

         createAndGo(4) - Create protocol on designated router.  The router
                        indicated by rsRouterProtocolRouterIndex must already
                        exist in the rsRouterTable.  The value of the
                        rsRouterProtocolProtocolIndex must be from the set
                        of protocol values defined by the RsRouterProtocolIndex
                        type.

         destroy(6)    -  Destroy protocol on designated router.  If the operation
                        is successful, the agent will remove the entry.  If the
                        operation failed, the row will remain in the table with
                        a rowStatus value of destroy(6).

                        Conditions on destroy(6):
                         1) The default router can not be deleted.
                         2) The local router can not be deleted.  A local router is
                            defined as the router that sourced the SNMP request.

         Upon creation of a router in the rsRouterTable, some protocol entries will
         appear in this table by default, which indicates that these protocols are
         created by the action of creating a router.  It is important to note, that 
         this behavior may change over time by protocol type."
    ::= { rsRouterProtocolEntry 3 }


-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Notification control objects
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- No notifications are defined in this MIB. Placeholder follows.

-- rsRouterTrapControl      OBJECT IDENTIFIER ::= { rsRouterMIB 2 }


-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Notifications
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- No notifications are defined in this MIB. Placeholder follows.

-- The following two OBJECT IDENTIFIERS are used to define SNMPv2 
-- Notifications that are easily translated into SNMPv1 Traps.

-- rsRouterTraps            OBJECT IDENTIFIER ::= { rsRouterMIB 3 }
-- rsRouterTrapPrefix       OBJECT IDENTIFIER ::= { rsRouterTraps 0 }


-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Conformance information
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

rsRouterConformance OBJECT IDENTIFIER ::= { rsRouterMIB 4 }
rsRouterCompliances OBJECT IDENTIFIER ::= { rsRouterConformance 1 }
rsRouterGroups      OBJECT IDENTIFIER ::= { rsRouterConformance 2 }

-- compliance statements

rsRouterCompliance MODULE-COMPLIANCE
        STATUS   current 
        DESCRIPTION
                "The compliance statement for entities which implement
                the Redstone ROUTER MIB."
        MODULE  -- this module
                MANDATORY-GROUPS { rsRouterGroup }
        ::= { rsRouterCompliances 1 }

-- units of conformance

rsRouterGroup OBJECT-GROUP
        OBJECTS {
                rsRouterNextRouterIndex,
                rsRouterName,
                rsRouterRowStatus,
                rsRouterProtocolRowStatus
        }
        STATUS  current 
        DESCRIPTION
                "A collection of objects providing management of routers 
                 and routing protocols in a Redstone product."
    ::= { rsRouterGroups 1 }

END